1 Modèle de base des centrales thermiques¶

1.1 Planification journalière du parc thermique¶

Variables de décision : Pour une type de centrale $X \in [A,B,C]$, et une heure de la journée $t\in {1,\dots,24}$, on définit : $$ N_t^{(X)} = \text{Nombre de centrales } X \text{allumées à } t\text{ h, (ENTIER)} $$ $$ P_t^{(X)} = \text{Puissance totale produite par les centrales } X \text{ à } t\text{ h, (CONTINUE)} $$ Contraintes : $$ N_t^{(X)} P_{min}^{(X)} \leq P_t^{(X)} \leq N_t^{(X)} P_{max}^{(X)} \text{ , Contraintes sur la puissance totale de chaque centrale} $$ $$ 0 \leq N_t^{(X)} \leq N^{(X)} \text{ , Contraintes sur le nombre de centrales allumées possible} $$ $$ \forall t, \sum_X P_t^{(X)} = D_t \text{ , Contrainte équilibre offre-demande} $$ Objectif : $$ \text{Minimiser} \sum_X \sum_T P_t^{(X)} C_{MWh}^{(X)} $$

Set parameter TokenServer to value "dev.cma.mines-paristech.fr"
Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 168 rows, 144 columns and 360 nonzeros
Model fingerprint: 0xe0a5527a
Variable types: 72 continuous, 72 integer (0 binary)
Coefficient statistics:
  Matrix range     [1e+00, 4e+03]
  Objective range  [1e+00, 3e+00]
  Bounds range     [5e+00, 1e+01]
  RHS range        [2e+04, 4e+04]
Found heuristic solution: objective 1235375.0000
Presolve removed 162 rows and 139 columns
Presolve time: 0.03s
Presolved: 6 rows, 5 columns, 14 nonzeros
Found heuristic solution: objective 881275.00000
Variable types: 2 continuous, 3 integer (0 binary)

Root relaxation: objective 8.694000e+05, 2 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0 869400.000    0    1 881275.000 869400.000  1.35%     -    0s
H    0     0                    869400.00000 869400.000  0.00%     -    0s
     0     0 869400.000    0    1 869400.000 869400.000  0.00%     -    0s

Explored 1 nodes (2 simplex iterations) in 0.04 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 869400 881275 1.23538e+06 

Optimal solution found (tolerance 1.00e-04)
Best objective 8.694000000000e+05, best bound 8.694000000000e+05, gap 0.0000%
Coût : 869400.0
h Consommation (MW) Production total Coût total Nb centrale A Puissance tot A Coût A Facteur de chargeA Nb centrale B Puissance tot B Coût B Facteur de chargeB Nb centrale C Puissance tot C Coût C Facteur de chargeC Coût MWh
0 0 15000 15000.0 20700.0 0 0.0 0.0 0 9 15000.0 20700.0 95 0 0.0 0.0 0 1.380000
1 1 15000 15000.0 20700.0 0 0.0 0.0 0 9 15000.0 20700.0 95 0 0.0 0.0 0 1.380000
2 2 15000 15000.0 20700.0 0 0.0 0.0 0 9 15000.0 20700.0 95 0 0.0 0.0 0 1.380000
3 3 15000 15000.0 20700.0 0 0.0 0.0 0 9 15000.0 20700.0 95 0 0.0 0.0 0 1.380000
4 4 15000 15000.0 20700.0 0 0.0 0.0 0 9 15000.0 20700.0 95 0 0.0 0.0 0 1.380000
5 5 15000 15000.0 20700.0 0 0.0 0.0 0 9 15000.0 20700.0 95 0 0.0 0.0 0 1.380000
6 6 30000 30000.0 42900.0 12 12500.0 18750.0 52 10 17500.0 24150.0 100 0 0.0 0.0 0 1.430000
7 7 30000 30000.0 42900.0 12 12500.0 18750.0 52 10 17500.0 24150.0 100 0 0.0 0.0 0 1.430000
8 8 30000 30000.0 42900.0 12 12500.0 18750.0 52 10 17500.0 24150.0 100 0 0.0 0.0 0 1.430000
9 9 25000 25000.0 35400.0 4 7500.0 11250.0 93 10 17500.0 24150.0 100 0 0.0 0.0 0 1.416000
10 10 25000 25000.0 35400.0 4 7500.0 11250.0 93 10 17500.0 24150.0 100 0 0.0 0.0 0 1.416000
11 11 25000 25000.0 35400.0 4 7500.0 11250.0 93 10 17500.0 24150.0 100 0 0.0 0.0 0 1.416000
12 12 25000 25000.0 35400.0 4 7500.0 11250.0 93 10 17500.0 24150.0 100 0 0.0 0.0 0 1.416000
13 13 25000 25000.0 35400.0 4 7500.0 11250.0 93 10 17500.0 24150.0 100 0 0.0 0.0 0 1.416000
14 14 25000 25000.0 35400.0 4 7500.0 11250.0 93 10 17500.0 24150.0 100 0 0.0 0.0 0 1.416000
15 15 40000 40000.0 57900.0 12 22500.0 33750.0 93 10 17500.0 24150.0 100 0 0.0 0.0 0 1.447500
16 16 40000 40000.0 57900.0 12 22500.0 33750.0 93 10 17500.0 24150.0 100 0 0.0 0.0 0 1.447500
17 17 40000 40000.0 57900.0 12 22500.0 33750.0 93 10 17500.0 24150.0 100 0 0.0 0.0 0 1.447500
18 18 27000 27000.0 38400.0 5 9500.0 14250.0 95 10 17500.0 24150.0 100 0 0.0 0.0 0 1.422222
19 19 27000 27000.0 38400.0 5 9500.0 14250.0 95 10 17500.0 24150.0 100 0 0.0 0.0 0 1.422222
20 20 27000 27000.0 38400.0 5 9500.0 14250.0 95 10 17500.0 24150.0 100 0 0.0 0.0 0 1.422222
21 21 27000 27000.0 38400.0 5 9500.0 14250.0 95 10 17500.0 24150.0 100 0 0.0 0.0 0 1.422222
22 22 27000 27000.0 38400.0 5 9500.0 14250.0 95 10 17500.0 24150.0 100 0 0.0 0.0 0 1.422222
23 23 27000 27000.0 38400.0 5 9500.0 14250.0 95 10 17500.0 24150.0 100 0 0.0 0.0 0 1.422222
Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 168 rows, 144 columns and 360 nonzeros
Model fingerprint: 0x48de0531
Coefficient statistics:
  Matrix range     [1e+00, 4e+03]
  Objective range  [1e+00, 3e+00]
  Bounds range     [5e+00, 1e+01]
  RHS range        [2e+04, 4e+04]
Presolve removed 153 rows and 99 columns
Presolve time: 0.00s
Presolved: 15 rows, 45 columns, 45 nonzeros

Iteration    Objective       Primal Inf.    Dual Inf.      Time
       0    8.5266000e+05   1.743750e+04   0.000000e+00      0s
      15    8.6940000e+05   0.000000e+00   0.000000e+00      0s

Solved in 15 iterations and 0.00 seconds (0.00 work units)
Optimal objective  8.694000000e+05
Coût : 869400.0

2 Coût d'opération¶

2.1 Coût de fonctionnement¶

Pour ce problème on modifie la fonction objectif.
Objectif : $$ \text{Minimiser} \sum_X \sum_T (P_t^{(X)} - P_{min}^{(X)}N_t^{(X)}) C_{MWh}^{(X)} + N_t^{(X)}C_{base}^{(X)} $$

Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 168 rows, 144 columns and 360 nonzeros
Model fingerprint: 0x54e335bf
Variable types: 72 continuous, 72 integer (0 binary)
Coefficient statistics:
  Matrix range     [1e+00, 4e+03]
  Objective range  [1e+00, 2e+03]
  Bounds range     [5e+00, 1e+01]
  RHS range        [2e+04, 4e+04]
Found heuristic solution: objective 1271875.0000
Presolve removed 162 rows and 139 columns
Presolve time: 0.02s
Presolved: 6 rows, 5 columns, 14 nonzeros
Found heuristic solution: objective 987500.00000
Variable types: 2 continuous, 3 integer (0 binary)
Found heuristic solution: objective 985950.00000

Root relaxation: objective 9.787500e+05, 2 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0 978750.000    0    1 985950.000 978750.000  0.73%     -    0s
H    0     0                    978900.00000 978750.000  0.02%     -    0s
     0     0 978750.000    0    1 978900.000 978750.000  0.02%     -    0s

Explored 1 nodes (2 simplex iterations) in 0.04 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 4: 978900 985950 987500 1.27188e+06 

Optimal solution found (tolerance 1.00e-04)
Best objective 9.789000000000e+05, best bound 9.789000000000e+05, gap 0.0000%
Coût : 978900.0

2.2 Coût du démarrage¶

Pour ce problème on modifie les variables de décisions et on y adapte les contraintes.

Variables de décision : Pour une type de centrale $X \in [A,B,C]$, et une heure de la journée $t\in {1,\dots,24}$, on définit : $$ N_t^{(X)} = \text{Nombre de centrales } X \text{allumées à } t\text{ h, (ENTIER)} $$ $$ N_{start,t}^{(X)} = \text{Nombre de centrales } X \text{démarrées à } t\text{ h, (ENTIER)} $$ $$ P_t^{(X)} = \text{Puissance totale produite par les centrales } X \text{ à } t\text{ h, (CONTINUE)} $$ Contraintes (par convention $N_{-1}^{(X)}=0$): $$ N_t^{(X)} P_{min}^{(X)} \leq P_t^{(X)} \leq N_t^{(X)} P_{max}^{(X)} \text{ , Contraintes sur la puissance totale de chaque centrale} $$ $$ N_{start,t}^{(X)} \leq N_t^{(X)} \leq N_{start,t}^{(X)}+N_{t-1}^{(X)} \text{ , Contraintes sur le nombre de centrales allumées possible} $$ $$ 0 \leq N_{start,t}^{(X)} \leq N^{(X)}-N_{t-1}^{(X)} \text{ , Contraintes sur le nombre de centrales adémarrées possible} $$ $$ \sum_X P_t^{(X)} = D_t \text{ , Contrainte équilibre offre-demande} $$ Objectif : $$ \text{Minimiser} \sum_X \sum_T (P_t^{(X)} - P_{min}^{(X)}N_t^{(X)}) C_{MWh}^{(X)} + N_t^{(X)}C_{base}^{(X)} + N_{start,t}^{(X)}C_{start}^{(X)} $$

Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 384 rows, 216 columns and 858 nonzeros
Model fingerprint: 0x11b2ce6a
Variable types: 72 continuous, 144 integer (0 binary)
Coefficient statistics:
  Matrix range     [1e+00, 4e+03]
  Objective range  [1e+00, 2e+03]
  Bounds range     [5e+00, 1e+01]
  RHS range        [5e+00, 4e+04]
Found heuristic solution: objective 1474375.0000
Presolve removed 180 rows and 30 columns
Presolve time: 0.00s
Presolved: 204 rows, 186 columns, 522 nonzeros
Variable types: 42 continuous, 144 integer (0 binary)
Found heuristic solution: objective 1379630.0000

Root relaxation: objective 1.011257e+06, 58 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0 1011257.14    0   26 1379630.00 1011257.14  26.7%     -    0s
H    0     0                    1019660.0000 1011257.14  0.82%     -    0s
H    0     0                    1016755.0000 1011257.14  0.54%     -    0s
H    0     0                    1016515.0000 1011257.14  0.52%     -    0s
H    0     0                    1016100.0000 1011257.14  0.48%     -    0s
     0     0 1014233.33    0    4 1016100.00 1014233.33  0.18%     -    0s
H    0     0                    1015860.0000 1014233.33  0.16%     -    0s
H    0     0                    1014400.0000 1014233.33  0.02%     -    0s

Cutting planes:
  Gomory: 3
  MIR: 27
  StrongCG: 2

Explored 1 nodes (98 simplex iterations) in 0.03 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 8: 1.0144e+06 1.01586e+06 1.0161e+06 ... 1.47438e+06

Optimal solution found (tolerance 1.00e-04)
Best objective 1.014400000000e+06, best bound 1.014400000000e+06, gap 0.0000%

3 Réserve de puissance¶

Pour intégrer la réserve de puissance on ajoute la contrainte : $$ \sum_X N_t^{(X)}P_{max}^{(X)}\geq D_t\times 1,15 $$

Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 408 rows, 216 columns and 930 nonzeros
Model fingerprint: 0xff8f72cd
Variable types: 72 continuous, 144 integer (0 binary)
Coefficient statistics:
  Matrix range     [1e+00, 4e+03]
  Objective range  [1e+00, 2e+03]
  Bounds range     [5e+00, 1e+01]
  RHS range        [5e+00, 5e+04]

MIP start from previous solve did not produce a new incumbent solution
MIP start from previous solve violates constraint Réserve_de_puissance_à_15 by 4500.000000000

Found heuristic solution: objective 1319775.0000
Presolve removed 180 rows and 30 columns
Presolve time: 0.00s
Presolved: 228 rows, 186 columns, 594 nonzeros
Found heuristic solution: objective 1239990.0000
Variable types: 42 continuous, 144 integer (0 binary)
Found heuristic solution: objective 1214220.0000

Root relaxation: objective 1.012257e+06, 67 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0 1012257.14    0   26 1214220.00 1012257.14  16.6%     -    0s
H    0     0                    1020660.0000 1012257.14  0.82%     -    0s
H    0     0                    1018680.0000 1012257.14  0.63%     -    0s
H    0     0                    1017340.0000 1012257.14  0.50%     -    0s
H    0     0                    1017100.0000 1012257.14  0.48%     -    0s
H    0     0                    1016695.0000 1012257.14  0.44%     -    0s
H    0     0                    1015725.0000 1015150.00  0.06%     -    0s
     0     0 1015150.00    0   12 1015725.00 1015150.00  0.06%     -    0s
H    0     0                    1015150.0000 1015150.00  0.00%     -    0s

Cutting planes:
  Gomory: 1
  MIR: 30

Explored 1 nodes (102 simplex iterations) in 0.03 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 10: 1.01515e+06 1.01572e+06 1.0167e+06 ... 1.31978e+06

Optimal solution found (tolerance 1.00e-04)
Best objective 1.015150000000e+06, best bound 1.015150000000e+06, gap 0.0000%

4 Planification cyclique¶

Pour ce problème on modifie la convention $N_{-1}^{(X)}=0$ par $N_{-1}^{(X)}=N_{23}^{(X)}$

Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 408 rows, 216 columns and 936 nonzeros
Model fingerprint: 0xbaa4c106
Variable types: 72 continuous, 144 integer (0 binary)
Coefficient statistics:
  Matrix range     [1e+00, 4e+03]
  Objective range  [1e+00, 2e+03]
  Bounds range     [5e+00, 1e+01]
  RHS range        [5e+00, 5e+04]
Found heuristic solution: objective 1354515.0000
Presolve removed 177 rows and 27 columns
Presolve time: 0.00s
Presolved: 231 rows, 189 columns, 603 nonzeros
Found heuristic solution: objective 1265490.0000
Variable types: 42 continuous, 147 integer (0 binary)
Found heuristic solution: objective 1227725.0000

Root relaxation: objective 9.855143e+05, 54 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0 985514.286    0   26 1227725.00 985514.286  19.7%     -    0s
H    0     0                    993725.00000 985514.286  0.83%     -    0s
H    0     0                    990820.00000 985514.286  0.54%     -    0s
H    0     0                    990580.00000 985514.286  0.51%     -    0s
H    0     0                    990165.00000 985514.286  0.47%     -    0s
     0     0 988540.000    0    3 990165.000 988540.000  0.16%     -    0s
H    0     0                    989925.00000 988540.000  0.14%     -    0s
H    0     0                    989030.00000 988540.000  0.05%     -    0s
H    0     0                    988790.00000 988540.000  0.03%     -    0s
H    0     0                    988540.00000 988540.000  0.00%     -    0s

Cutting planes:
  Gomory: 1
  MIR: 19

Explored 1 nodes (85 simplex iterations) in 0.03 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 10: 988540 988790 989030 ... 1.26549e+06

Optimal solution found (tolerance 1.00e-04)
Best objective 9.885400000000e+05, best bound 9.885400000000e+05, gap 0.0000%

5 Centrales hydroélectriques¶

5.1¶

On ajoute les variables de décisions suivantes:
pour $Y\in[9,14]$ (pour les centrales de 900 MW et 1400MW),
$$ H_t^{(Y)} \in \{0,1\} \text{ , vaut 1 si la centrale $X$ fonctionne à } t \text{ h 0 sinon} $$ $$ H_{start,t}^{(Y)} \in \{0,1\} \text{ , vaut 1 si la centrale $X$ démarre à } t \text{ h 0 sinon} $$ Avec les contraintes : $$ H_{start,t}^{(Y)} \leq 1 - H_{t-1}^{(Y)} \text{ , Il n'y a pas de démarrage si la centrale est déjà allumée} $$ $$ H_{start,t}^{(Y)} \leq H_{t}^{(Y)} \text{ , La centrale fonctionne lorsqu'elle est est démarrée} $$ $$ \sum_X P_t^{(X)} + \sum_Y N_t^{(Y)}P^{(Y)}= D_t \text{ , Contrainte équilibre offre-demande} $$ $$ \sum_X N_t^{(X)}P_{max}^{(X)} + \sum_X (1-H_t^{(Y)})P^{(Y)}\geq D_t\times 1,15 \text{ , marges de sécurité} $$ L'objectif mis à jour devient: $$ \text{Minimiser} \sum_X \sum_t (P_t^{(X)} - P_{min}^{(X)}N_t^{(X)}) C_{MWh}^{(X)} + N_t^{(X)}C_{base}^{(X)} + N_{start,t}^{(X)}C_{start}^{(X)} + \sum_Y \sum_t H_t^{(Y)}C_{base}^{(Y)} + H_t^{(Y)}C_{start}^{(Y)} $$

5.2¶

On ajoute les variables de décision suivante : $$ S_t = \text{Puissance appelée par le pompage à l'instant }t $$ Puis la contrainte : $$ S_t d^{(S)} = \sum_Y N_t^{(Y)}d^{(Y)} $$ Où $d^{(S)}$ représente la hauteur d'eau élevée par MWh et $d^{(Y)}$ la hauteur d'eau prélevée lorsque la centrale $Y$ fonctionne.
On met à jour les contraintes suivante: $$ \sum_X P_t^{(X)} + \sum_Y N_t^{(Y)}P^{(Y)}-S_t= D_t \text{ , Contrainte équilibre offre-demande} $$